
#ifndef SHAPEBOARD_H
#define SHAPEBOARD_H

#include <BShape>
#include <BLabel>
#include <BButton>
#include <BComboBox>
#include <BRealSpinBox>
#include <BCheckBox>
#include <BLineEdit>

#include "Board.h"

class ShapeBoard : public Board
{
	BOBJECT(ShapeBoard);
public:
	ShapeBoard(BWidget* parent = 0);
	~ShapeBoard();

protected:
	void slotAssetChanged(BObject* object, const BValue& value);

	void slotPositionEditFinished(BObject* object, const BValue& value);
	void slotRotateEditFinished(BObject* object, const BValue& value);

	void slotEnableCheckBoxToggled(BObject* object, const BValue& value);
	void slotVisibleCheckBoxToggled(BObject* object, const BValue& value);
	void slotCollidingCheckBoxToggled(BObject* object, const BValue& value);
	void slotLightingCheckBoxToggled(BObject* object, const BValue& value);

	void slotLineWidthEdited(BObject* object, const BValue& value);
	void slotPointSizeEdited(BObject* object, const BValue& value);
	void slotPolygonModeToggled(BObject* object, const BValue& value);
	void slotDepthOffsetEditFinished(BObject* object, const BValue& value);

	void slotCullbackToggled(BObject* object, const BValue& value);
	void slotDepthTestToggled(BObject* object, const BValue& value);
	void slotPointSmoothToggled(BObject* object, const BValue& value);
	void slotLineSmoothToggled(BObject* object, const BValue& value);
	void slotPolygonSmoothToggled(BObject* object, const BValue& value);
	void slotTransparentToggled(BObject* object, const BValue& value);
	void slotMaterialButtonClicked();
	void slotColorButtonClicked();

private:
	BShape*				_shape;

	BCheckBox*			_enabledCheckBox;
	BCheckBox*			_visibleCheckBox;
	BCheckBox*			_collidingCheckBox;
	BCheckBox*			_lightingCheckBox;

	BLineEdit*			_positionEdit;
	BLineEdit*			_rotateEdit;

	BFloatSpinBox*		_lineWidthSpinBox;
	BFloatSpinBox*		_pointSizeSpinBox;
	BComboBox*			_polyModeComboBox;

	BCheckBox*			_cullbackCheckBox;
	BCheckBox*			_depthTestCheckBox;
	BFloatSpinBox*		_depthOffsetSpinBox;
	BCheckBox*			_pointSmoothCheckBox;
	BCheckBox*			_lineSmoothCheckBox;
	BCheckBox*			_polySmoothCheckBox;
	BCheckBox*			_transparentCheckBox;

	BLabel*				_classNameLabel;
};

#endif
